<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Vue事件处理</title>
    <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
</head>
<body>
    <!-- 监听事件 -->
    <div id="example-1">
        <button v-on:click="counter += 1">点我</button>
        <p>
            这个按钮被点击了 {{ counter }} 次.
        </p>
    </div>
    <!-- 事件处理方法 -->
    <div id="example-2">
        <!-- `greet` 是在下面定义的方法名-->
        <button v-on:click="greet">
            Greet
        </button>
    </div>
    <!-- 内联处理器中的方法 -->
    <div id="example-3">
        <button v-on:click="say('bi')">Say hi</button>
        <button v-on:click="say('what')">Say what</button>
        <button v-on:click="warn('Form cannot be submitted yet.', $event)">
            Submit
        </button>
        <a href="" v-on:click.stop="doThis"></a>
        <!-- 修饰符 -->
        <button v-on:click.ctrl="onClick('aaa')">A</button>
        <button v-on:click.exact="onClick('bbb')">B</button>
    </div>
</body>
<script type="text/javascript">
    const example1 = new Vue({
        el: '#example-1',
        data: {
            counter: 0
        }
    })
    // 事件处理方法
    const example2 = new Vue({
        el: '#example-2',
        data: {
            name: 'Vue.js'
        },
        // 在`methods`对象中定义方法
        methods: {
            greet: function(event) {
                // `this`在方法中指向当前Vue实例
                alert('Hello'+this.name+'!')
                // `even`是原生DOM事件
                if(event){
                    alert(event.target.tagName)
                }
            }
        }
    })
    // 也可以用JavaScript直接调用方法
    example2.greet() // => 'Hello Vue.js！'
    const example3 = new Vue({
        el: '#example-3',
        methods: {
            say: function(message) {
                alert(message)
            },
            warn: function(message,event) {
                // 现在可以访问原生事件对象
                if(event){
                    event.preventDefault()
                }
                alert(message)
            },
            // 修饰符
            onClick: function(message) {
                alert(message)
            }
        }
    })
</script>
</html>